`ifndef VERILATOR
module testbench;
  reg [4095:0] vcdfile;
  reg clock;
`else
module testbench(input clock, output reg genclock);
  initial genclock = 1;
`endif
  reg genclock = 1;
  reg [31:0] cycle = 0;
  reg [0:0] PI_rst_n;
  reg [0:0] PI_wclk;
  reg [0:0] PI_rclk;
  reg [0:0] PI_empty;
  reg [0:0] PI_full;
  reg [7:0] PI_wr_data;
  reg [0:0] PI_wr_en;
  reg [0:0] PI_rd_en;
  reg [7:0] PI_rd_data;
  async_fifo_props UUT (
    .rst_n(PI_rst_n),
    .wclk(PI_wclk),
    .rclk(PI_rclk),
    .empty(PI_empty),
    .full(PI_full),
    .wr_data(PI_wr_data),
    .wr_en(PI_wr_en),
    .rd_en(PI_rd_en),
    .rd_data(PI_rd_data)
  );
`ifndef VERILATOR
  initial begin
    if ($value$plusargs("vcd=%s", vcdfile)) begin
      $dumpfile(vcdfile);
      $dumpvars(0, testbench);
    end
    #5 clock = 0;
    while (genclock) begin
      #5 clock = 0;
      #5 clock = 1;
    end
  end
`endif
  initial begin
`ifndef VERILATOR
    #1;
`endif
    // UUT.$auto$clk2fflogic.\cc:81:sample_control_edge$/rclk#sampled$471  = 1'b1;
    // UUT.$auto$clk2fflogic.\cc:81:sample_control_edge$/wclk#sampled$447  = 1'b1;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data$$assert$async_fifo_props .\sv:30$6_EN#sampled$453  = 1'b0;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data$$display$async_fifo_props .\sv:37$13_EN#sampled$477  = 1'b0;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data$$eq$async_fifo_props .\sv:30$8_Y#sampled$459  = 1'b1;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data$$past$async_fifo_props .\sv:30$1$0#sampled$461  = 1'b1;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data$/u_fifo .\wr_ptr#sampled$463  = 1'b0;
    // UUT.$auto$clk2fflogic.\cc:95:sample_data${/u_fifo .\wr_ptr/u_fifo .\rd_ptr}#sampled$475  = 2'b00;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:69:sample_control$$auto$rtlil .\cc:2918:Not$674#sampled$675  = 1'b0;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:81:sample_control_edge$/rclk#sampled$487  = 1'b1;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:81:sample_control_edge$/wclk#sampled$507  = 1'b1;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$0/rd_ptr[4:0]#sampled$683  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$0/wr_ptr[4:0]#sampled$665  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$298#sampled$701  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$325#sampled$655  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$332#sampled$645  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$339#sampled$635  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$346#sampled$625  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$353#sampled$615  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$360#sampled$605  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$367#sampled$595  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$374#sampled$585  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$381#sampled$575  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$388#sampled$565  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$395#sampled$555  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$402#sampled$545  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$409#sampled$535  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$416#sampled$525  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$423#sampled$515  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$$auto$rtlil .\cc:3053:Mux$430#sampled$505  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[0]#sampled$653  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[10]#sampled$553  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[11]#sampled$543  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[12]#sampled$533  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[13]#sampled$523  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[14]#sampled$513  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[15]#sampled$503  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[1]#sampled$643  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[2]#sampled$633  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[3]#sampled$623  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[4]#sampled$613  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[5]#sampled$603  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[6]#sampled$593  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[7]#sampled$583  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[8]#sampled$573  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/mem[9]#sampled$563  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/rd_data#sampled$699  = 8'b00000000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/rd_ptr#sampled$681  = 5'b10101;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/wr2rd_sync1#sampled$485  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/wr2rd_sync1#sampled$493  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/wr2rd_sync2#sampled$483  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/wr_gray#sampled$495  = 5'b00000;
    // UUT.u_fifo.$auto$clk2fflogic.\cc:95:sample_data$/wr_ptr#sampled$663  = 5'b00100;

    // state 0
    PI_rst_n = 1'b1;
    PI_wclk = 1'b0;
    PI_rclk = 1'b0;
    PI_empty = 1'b0;
    PI_full = 1'b0;
    PI_wr_data = 8'b00000000;
    PI_wr_en = 1'b1;
    PI_rd_en = 1'b0;
    PI_rd_data = 8'b00000000;
  end
  always @(posedge clock) begin
    // state 1
    if (cycle == 0) begin
      PI_rst_n <= 1'b0;
      PI_wclk <= 1'b1;
      PI_rclk <= 1'b0;
      PI_empty <= 1'b1;
      PI_full <= 1'b0;
      PI_wr_data <= 8'b00000000;
      PI_wr_en <= 1'b0;
      PI_rd_en <= 1'b0;
      PI_rd_data <= 8'b00000000;
    end

    genclock <= cycle < 1;
    cycle <= cycle + 1;
  end
endmodule
